#ifndef NMC_SOLIDTILE_HPP
#define NMC_SOLIDTILE_HPP

#include "tile/tile.hpp"

namespace nmc
{
	/**
	 * Represents a solid tile.
	 *  
	 */
	class SolidTile: public Tile
	{
	public:
		SolidTile(const Point& tileMapPosition, TileMap* tileMap);
		void stickToFloor(Actor* actor, Point& velocity);
		void resolveCollision(Actor* actor, Point& velocity);
		bool isStandingOnFloor(Actor* actor);
		void calculateSolidity(TileMap* tileMap);
		void draw(Graphics* graphics);
		void drawType(Graphics* graphics);
		void drawSolidity(Graphics* graphics);
	
	private:
		bool mSolidTop;
		bool mSolidRight;
		bool mSolidBottom;
		bool mSolidLeft;
		bool mConnectedToASlopingRightTile;
		bool mConnectedToASlopingLeftTile;
        bool mSlopingLeftTilePusher;

	};
}

#endif